home *** CD-ROM | disk | FTP | other *** search
/ Libris Britannia 4 / science library(b).zip / science library(b) / DDJMAG / DDJ9005.ZIP / AYERS.ZIP / MRKTWNDW.CLS < prev    next >
Text File  |  1990-02-26  |  2KB  |  82 lines

  1.  
  2. Object subclass: #MarketWindow
  3.   instanceVariableNames: 
  4.     'topPane aPane simulator '
  5.   classVariableNames: 
  6.     'Version Frame Title '
  7.   poolDictionaries: '' !
  8.  
  9. !MarketWindow class methods !
  10.  
  11. initialize 
  12.     Frame   := Display boundingBox insetBy:16.
  13.     Title   := 'Market Checkout Simulation'.
  14.     Version := ' (Version 1.0 -- 02/24/90 -- KEA)'.!
  15.  
  16. new 
  17.     self initialize. 
  18.     ^super new.! !
  19.  
  20.  
  21. !MarketWindow methods !
  22.  
  23. close 
  24.     self stop.!
  25.  
  26. initPane:aFrame 
  27.     Display white:aFrame. 
  28.     self initSimulator:aFrame. 
  29.     ^Form fromDisplay:aFrame.!
  30.  
  31. initSimulator:aFrame 
  32.     simulator isNil 
  33.         ifTrue:[ 
  34.             simulator := MarketSimulator new 
  35.                 reframe:aFrame; 
  36.                 yourself].!
  37.  
  38. open 
  39.     topPane := TopPane new 
  40.         model:self; 
  41.         label:Title, Version; 
  42.         menu:#windowMenu; 
  43.         rightIcons:#(collapse); 
  44.         yourself. 
  45.     topPane addSubpane: 
  46.         (aPane := GraphPane new 
  47.             model:self; 
  48.             name:#initPane:; 
  49.             menu:#paneMenu; 
  50.             framingRatio:(0 @ 0 extent:1 @ 1)). 
  51.     topPane reframe:Frame. 
  52.     topPane dispatcher openWindow scheduleWindow.!
  53.  
  54. paneMenu 
  55.     (simulator isNil or:[simulator running]) 
  56.         ifTrue:[^EmptyMenu new] 
  57.         ifFalse:[ 
  58.             ^Menu 
  59.                 labels:'START SIMULATION' 
  60.                 lines:#() 
  61.                 selectors:#(start)].!
  62.  
  63. start 
  64.     simulator start.!
  65.  
  66. stop
  67.     |semaphore|
  68.     simulator isNil
  69.         ifFalse:[
  70.             CursorManager execute change.
  71.             semaphore := Semaphore new.
  72.             simulator stop:semaphore.
  73.             semaphore wait;  release.
  74.             simulator release.  simulator := nil.
  75.             CursorManager normal change].!
  76.  
  77. windowMenu 
  78.     ^Menu 
  79.         labels:'cycle\collapse\close' withCrs 
  80.         lines:#() 
  81.         selectors:#(cycle collapse closeIt).! !
  82.